home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
081-090
/
amok90
/
sana2
/
sana2.mod
next >
Wrap
Text File
|
1993-11-04
|
10KB
|
270 lines
(* ------------------------------------------------------------------------
:Module. SANA2.MOD
:Contents. Amiga Oberon interface module to SANA-II network drivers
:Author. Stefan Hellwig
:Address. Oberer Kirchweg 12, 3501 Schauenburg 1, Germany
:EMail. Z-Netz : STEFAN_HELLWIG@URANUS.ZER
:EMail. UseNet : stefan_hellwig@uranus.osgo.ks.he.schule.de
:History. V1.00 10-Mar-92
:Copyright. Written 1993 by Stefan Hellwig and freely distributable.
:Language. Oberon-2
:Translator. AMIGA OBERON v3.00d
:Remark. AmigaOS 2.04 and above only !
------------------------------------------------------------------------ *)
MODULE Sana2;
IMPORT
BT:= BasicTypes,
E := Exec,
T := Timer,
U := Utility;
(*
** Filename: devices/sana2.h
** Revision: 1.11
** Date: 92/11/10 13:35:29
**
** Structure definitions for SANA-II devices.
**
** (C) Copyright 1991 Commodore-Amiga Inc.
** All Rights Reserved
*)
CONST
maxAddrBits * = 128;
maxAddrBytes * = (maxAddrBits+7) DIV 8;
TYPE
Sana2ReqPtr * = UNTRACED POINTER TO Sana2Req;
Sana2Req * = STRUCT (ioReq * : E.IORequest)
wireError * : LONGINT; (* wire TYPE specific error *)
packetType* : LONGINT; (* packet TYPE *)
srcAddr * : ARRAY maxAddrBytes OF E.BYTE; (* source addr *)
dstAddr * : ARRAY maxAddrBytes OF E.BYTE; (* dest addr *)
dataLength* : LONGINT; (* length of packet data *)
data * : E.APTR; (* packet data *)
statData * : E.APTR; (* statistics data pointer *)
bufferManagement * : E.APTR; (* see SANA-II OpenDevice adoc *)
END;
(*
** defines for the io_Flags field
*)
CONST
rawB * = 7; (* raw packet IO requested *)
raw * = SHORTSET{rawB};
bCastB * = 6; (* broadcast packet (received) *)
bCast * = SHORTSET{bCastB};
mCastB * = 5; (* multicast packet (received) *)
mCast * = SHORTSET{mCastB};
quickB * = E.quick; (* quick IO requested (0) *)
quick * = SHORTSET{quickB};
(*
** defines for OpenDevice() flags
*)
mineB * = 0; (* exclusive access requested *)
mine * = LONGSET{mineB};
promB * = 1; (* promiscuous mode requested *)
prom * = LONGSET{promB};
(*
** defines for OpenDevice() tags
*)
dummy = U.user + 0B0000H;
copyToBuff * = dummy + 1;
copyFromBuff * = dummy + 2;
TYPE
(*
** Copy procedure definition (Added by Implementor)
** Same for CopyFromBuff and CopyToBuff
*)
copyProc * = PROCEDURE(to{10} :BT.ANY;
from{11}:BT.ANY;
n{0} :LONGINT):BOOLEAN;
(*
** Device query data structure
*)
DeviceQueryPtr * = UNTRACED POINTER TO DeviceQuery;
DeviceQuery * = STRUCT
(*
** Standard information
*)
sizeAvailable * : LONGINT; (* bytes available *)
sizeSupplied * : LONGINT; (* bytes supplied *)
devQueryFormat* : LONGINT; (* this is type 0 *)
deviceLevel * : LONGINT; (* this document is level 0 *)
(*
** Common information
*)
addrFieldSize * : INTEGER; (* address size in bits *)
mtu * : LONGINT; (* maximum packet data size *)
bps * : LONGINT; (* line rate (bits/sec) *)
hardwareType * : LONGINT; (* what the wire is *)
(*
** Format specific information
*)
END;
CONST
(*
** defined Hardware types
**
** If your hardware type isn't listed below contact CATS to get a new
** type number added for your hardware.
*)
ethernet * = 1;
ieee802 * = 6;
arcnet * = 7;
localTalk * = 11;
dyLAN * = 12;
amokNet * = 200;
ppp * = 253;
slip * = 254;
cSlip * = 255;
TYPE
PacketTypeStatsPtr * = UNTRACED POINTER TO PacketTypeStats;
PacketTypeStats * = STRUCT
packetsSent * : LONGINT; (* transmitted count *)
packetsReceived* : LONGINT; (* received count *)
bytesSent * : LONGINT; (* bytes transmitted count *)
bytesReceived * : LONGINT; (* bytes received count *)
packetsDropped * : LONGINT; (* packets dropped count *)
END;
SpecialStatRecordPtr * = UNTRACED POINTER TO SpecialStatRecord;
SpecialStatRecord * = STRUCT
type * : LONGINT; (* statistic identifier *)
count *: LONGINT; (* the statistic *)
string*: UNTRACED POINTER TO ARRAY OF CHAR; (* statistic name *)
END;
SpecialStatHeaderPtr * = UNTRACED POINTER TO SpecialStatHeader;
SpecialStatHeader * = STRUCT
recordCountMax * :LONGINT; (* room available *)
recordCountSupplied * :LONGINT; (* number supplied *)
(* struct Sana2SpecialStatRecord[RecordCountMax]; *)
END;
DeviceStatsPtr * = UNTRACED POINTER TO DeviceStats;
DeviceStats * = STRUCT
packetsReceived * : LONGINT; (* received count *)
packetsSent * : LONGINT; (* transmitted count *)
badData * : LONGINT; (* bad packets received *)
overruns * : LONGINT; (* hardware miss count *)
unused * : LONGINT; (* Unused field *)
unknownTypesReceived * : LONGINT; (* orphan count *)
reconfigurations* : LONGINT; (* network reconfigurations *)
lastStart * : T.TimeVal; (* time of last online *)
END;
(*
** Device Commands
*)
CONST
start * = E.nonStd;
query * = start + 0;
getStationAddress * = start + 1;
configInterface * = start + 2;
addMulticastAddress* = start + 5;
delMulticastAddress* = start + 6;
multicast * = start + 7;
broadcast * = start + 8;
trackType * = start + 9;
untrackType * = start +10;
getTypeStats * = start +11;
getSpecialStats * = start +12;
getGlobalStats * = start +13;
onEvent * = start +14;
readOrphan * = start +15;
online * = start +16;
offline * = start +17;
end * = start +18;
(*
** defined errors for io_Error (see also <exec/errors.h>)
*)
errNoError * = 0; (* peachy-keen *)
errNoResources * = 1; (* resource allocation failure *)
errBadArgument * = 3; (* garbage somewhere *)
errbadState * = 4; (* inappropriate state *)
errBadAddress * = 5; (* who? *)
errMTUExeeded * = 6; (* too much to chew *)
errNotSupported * = 8; (* hardware can't support cmd *)
errSoftware * = 9; (* software error detected *)
errOutOfService * = 10; (* driver is OFFLINE *)
(*
** From <exec/errors.h>
**
** IOERR_OPENFAIL (-1) * device/unit failed to open *
** IOERR_ABORTED (-2) * request terminated early [after AbortIO()] *
** IOERR_NOCMD (-3) * command not supported by device *
** IOERR_BADLENGTH (-4) * not a valid length (usually IO_LENGTH) *
** IOERR_BADADDRESS (-5) * invalid address (misaligned or bad range) *
** IOERR_UNITBUSY (-6) * device opens ok, but requested unit is busy *
** IOERR_SELFTEST (-7) * hardware failed self-test *
*)
(*
** defined errors for ios2_WireError
*)
wErrGenericError * = 0; (* no specific info available *)
wErrNotConfigured * = 1; (* unit not configured *)
wErrUnitOnline * = 2; (* unit is currently online *)
wErrUnitOffline * = 3; (* unit is currently offline *)
wErrAlreadyTracked * = 4; (* protocol already tracked *)
wErrNotTracked * = 5; (* protocol not tracked *)
wErrBuffError * = 6; (* buff mgt func returned error *)
wErrSrcAddress * = 7; (* source address problem *)
wErrDstAddress * = 8; (* destination address problem *)
wErrBadBroadcast * = 9; (* broadcast address problem *)
wErrBadMulticast * = 10; (* multicast address problem *)
wErrMulticastFull * = 11; (* multicast address list full *)
wErrBadEvent * = 12; (* unsupported event class *)
wErrBadStatData * = 13; (* statdata failed sanity check *)
wErrIsConfigured * = 15; (* attempt to config twice *)
wErrNullPointer * = 16; (* null pointer detected *)
(*
** defined events
*)
eventError * = LONGSET{0}; (* error catch all *)
eventTX * = LONGSET{1}; (* transmitter error catch all *)
eventRX * = LONGSET{2}; (* receiver error catch all *)
eventOnline * = LONGSET{3}; (* unit is in service *)
eventOffline * = LONGSET{4}; (* unit is not in service *)
eventBuff * = LONGSET{5}; (* buff mgt function error *)
eventHardware * = LONGSET{6}; (* hardware error catch all *)
eventSoftware * = LONGSET{7}; (* software error catch all *)
END Sana2.